今天要來筆記 git merge 解決衝突 。
為什麼會有衝突呢?
假如我們 火箭隊 有一個專案,當我在分支上 coding 的時候,已經有夥伴在主要分支(master)上進行 commit 了,那就有可能程式碼都剛好寫在同一支檔案上,而檔案的某一行就剛好碰到惹~
這時候該怎麼辦呢?
在開始之前,我們重新複習以前的指令吧(((o(゚▽゚)o)))
前面的錢字號($)代表 command line 開始,真正在打的時候不用加入$窩~
$ mkdir project  //建立新資料夾
$ cd project  //進入資料夾
$ git init  //建立數據庫
$ touch index.html  //新增檔案
$ git add .  //加入索引(暫存區)
git commit -m "修改紀錄"  //提交 commit
圖示:
再來,新增一個分支
$ git branch 分支名稱
圖示:
我在 html 裡面新增 all.css 與 h1標籤
然後,我們把 aaa 加入索引並且 commit
之後使用 git checkout 回到 master 上
$ git checkout master
在 master 上,我再去新增一個 h1標籤
當我們新增完後,可以使用 git status 去查詢檔案狀態喲!
然後我們做加入索引並且 commit 的動作。
接著,重頭戲來惹,我們要合併嚕!
使用 git merge 分支名稱
--Oops!無法合併(我們看 Git 給我們的提示說發生衝突惹,要我們去解決它後,才能 commit)
再打開 index.html 看看發生什麼事
--他會跟你說有兩個東西重複了喇~你要留哪一個
那我們當然是留充滿愛der Hello World 呀!那麼就把厭世D Hell World 刪掉吧!
然後,很重要哦!
修改完成後,要記得加入索引再 commit 哦! 不確定檔案狀態怎麼樣的話可以用 git status 去查詢喲
另外, Sourcetree 會長這樣。
跟我的這張示意圖 484 長得 87 像 R :.゚ヽ(*´∀`)ノ゚.:。
今天實驗了一下,用一個 commit 裡開了兩個分支,並把兩個分支都做了 commit 的動作,接著合併兩個分支會發生什麼事。
這裡決定用 Sourcetree 來實驗:)
示意圖大概是長這樣
--在畫這張圖的時候好像被打到一直撞牆,然後觀念都錯了
之後我發現錯誤在於,我把分支化成圈圈,但其實圈圈的出現是有做 commit 的時候才會有的,再去看其他大神的文章,形容
分支就像貼紙那樣
Sourcetree 長這樣
我的 HEAD 會在 bbb 的分支上。
我這裡的問題是如果我的 master 要合併 那兩個分支的合併時該怎做(因為不知道分支名字),不過後來知道了,要看是從哪裡合併出去,再後來使用 git branch 就可以知道 HEAD 在哪了辣! 講得好複雜,看 Sourcetree 就會比較知道了。
--成功合併了:)
不刪的緣故是除了留著看以前紀錄用,更重要的是分支很便宜喇(只要 40 個字元大小)